Intelligent Messaging

ABSTRACT

A method includes sending notification messages to a plurality of subscribers of a notification platform via a plurality of communications devices of the subscribers over a plurality of communications channels, each communications device associated with at least one of the plurality of communications channels, including sending notification messages to devices over first channels associated with the communications devices. The method also includes monitoring a status of the first channels and a status of the notification messages sent over the first channels; and adapting the sending of the notification messages according to the monitored statuses, including sending at least some of the notification messages over second channels associated with the communications devices.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Application Ser.No. 61/412,148, entitled “Intelligent Messaging Platform,” filed Nov.10, 2010, the contents of which are incorporated herein by reference.

BACKGROUND

This application relates to intelligent messaging.

Reliable and rapid delivery of large numbers of text messages isimportant to enterprises, public safety agencies, universities, andothers with a need to quickly notify interested parties.

There are various protocols for delivering short message service (SMS)text messages, primarily SMPP (Short Message Peer-to-Peer) and SMTP(Simple Mail Transfer Protocol). Each of these protocols presentsdifferent challenges for effective message delivery.

SMTP is inherently slow and unreliable. Due to its open nature andvulnerability to abuse, SMTP is often throttled or otherwise restrictedby wireless service providers. Furthermore, SMTP is typically unable toprovide information about the success or failure of a transmission as amessage passes through downstream systems to reach a targeted mobilesubscriber.

SMPP is a more secure and robust protocol. SMPP is not subject to thesame wireless service provider throttling and restrictions, but is stillclosely regulated by wireless carriers. Unlike SMTP, SMPP is not open toanyone who wishes to send an SMS message. Rather, entities that want togain access to an SMPP connection must apply for access and open theirmessaging platform to audit by the wireless carriers.

Third parties, referred to as aggregators, have emerged as mediatorsbetween wireless carriers and entities wishing to send SMS over SMPP.Aggregators ensure that the rules established by the mobile industry andby each wireless service provider are adhered to by the entities sendingmessages. In addition, aggregators maintain “binds,” or connections,across multiple wireless service providers. Binds allow message sendingentities to gain access to multiple wireless carrier networks whilemaintaining a connection to only a single SMS message aggregator. Ingeneral, SMPP aggregators differ among themselves with respect to themobile carriers they support, the reliability of their systems, andtheir message throughput.

Binds to service providers, either directly to wireless carriers orthrough third party aggregators, are prone to failure and normally tonot provide service level agreements for message delivery.

Entities sending messages through aggregators are assigned a single 5-or 6-digit “short code,” which is used to uniquely identify the messagesending entity to its subscribers, regardless of the subscriber's mobileservice provider.

SUMMARY

In a general aspect, a computer-implemented method includes sendingnotification messages to a plurality of subscribers of a notificationplatform via a plurality of communications devices of the subscribersover a plurality of communications channels, each communications deviceassociated with at least one of the plurality of communicationschannels, including sending notification messages to devices over firstchannels associated with the communications devices. The method furtherincludes monitoring a status of the first channels and a status of thenotification messages sent over the first channels; and adapting thesending of the notification messages according to the monitoredstatuses, including sending at least some of the notification messagesover second channels associated with the communications devices.

Embodiments may include one or more of the following.

Sending notification messages includes, for a first one of thecommunications devices: identifying a first communications channel forcommunication with the first one of the communications devices; andsending the notification message to the first one of the communicationsdevices via the first communications channel.

Adapting the sending of the notification messages includes, for thefirst one of the communications devices: identifying a secondcommunications channel for communication with the first one of thecommunications devices; and sending the notification message to thefirst one of the communications devices via the second communicationschannel.

Identifying the first communications channel includes identifying amobile communications carrier associated with the mobile communicationsdevice. Identifying the first communications channel includes selectinga communications channel based on at least one of a type of connectionassociated with the communications channel and a status of thecommunications channel. Identifying the first communications channelincludes employing a load balancing mechanism.

At least one of the first channels includes an aggregator, and a statusof at least one of the first channels includes a throughput of theaggregator.

The status of the notification messages includes at least one of atransmission status of the notification messages through the firstcommunications channels and a delivery status of the notificationmessages to the communications devices.

Monitoring a status of the notification messages includes determiningthe status of a first notification message based on an event associatedwith the first notification message. Determining the status of a firstnotification message includes receiving an event status messageindicative of the event associated with the first notification messagefrom a component of the corresponding first communications channel.

Monitoring a status of the first communications channels includesreceiving no response from a component of one of the firstcommunications channels within a predetermined amount of time.

Adapting the sending of the notification messages according to themonitored status includes sending at least some of the notificationmessages over second channels if the results of the monitoring areindicative of a transmission failure.

The second channels are different from the first channels.

The method further includes monitoring a status of the secondcommunications channels and a status of the notification messages sentover the second channels. The method further includes updating a statusof the subscribers based on at least one of the status of the firstcommunications channels, the status of the notification messages sentover the first channels, the status of the second communicationschannels, and the status of the notification messages sent over thesecond channels.

The method further includes accepting an instruction to send thenotification messages to the plurality of subscribers.

The notification message is at least one of a short message service(SMS) message, a voice message, and an email.

In another general aspect, a system includes a message routing moduleconfigured to send notification messages to a plurality of subscribersof a notification platform via a plurality of communications devices ofthe subscribers over a plurality of communications channels, eachcommunications device associated with at least one of the plurality ofcommunications channels, including sending notification messages todevices over first channels associated with the communications devices;and a message status module configured to monitor a status of the firstchannels and a status of the notification messages sent over the firstchannels. The message routing module is further configured to adapt thesending of the notification messages according to the monitoredstatuses, including sending at least some of the notification messagesover second channels associated with the communications devices.

Embodiments may include one or more of the following.

The message routing module comprises a channel selection moduleconfigured to identify a first channel for communication with a firstone of the communications devices; and an output module configured tosend the notification message to the first one of the communicationsdevices via the first communications channel.

The channel selection module is configured to identify a mobilecommunications carrier associated with the communications device. Thechannel selection module is configured to identify the first channelbased on at least one of a type of connection associated with the firstchannel and a status of the first channel. The channel selection moduleis configured to employ a load balancing mechanism to identify the firstchannel.

The message status module is configured to determine the status of afirst notification message based on an event associated with the firstnotification message.

The message routing module is configured to send at least some of thenotification messages over second channels if the results of themonitoring are indicative of a transmission failure.

The message status module is further configured to monitor a status ofthe second channels and a status of the notification messages sent overthe second channels.

The system further includes a subscriber data module configured toupdate a status of the subscribers based on at least one of the statusof the first communications channels, the status of the notificationmessages sent over the first channels, the status of the secondcommunications channels, and the status of the notification messagessent over the second channels.

The system further includes an input module configured to acceptinstructions to send the notification messages to the plurality ofsubscribers.

The systems and methods described herein have a number of advantages.For instance, the intelligent messaging platform is a high reliability,high performance messaging platform that is capable of leveraging thestrengths of each message delivery alternative to enhance the throughputand overall delivery rates for messages. In addition, the platformprovides a strategy for mitigating system outages, throughputlimitations, visibility into message delivery status, and messagedelivery latency.

The intelligent messaging platform described herein is able toadaptively deliver messages, including SMS messages, voice messages, andemails, to subscribers according to subscriber preferences and based onreal time feedback about the status of delivery channels.

Other features and advantages of the invention are apparent from thefollowing description and from the claims.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram of an intelligent messaging platform andassociated interfaces.

FIG. 2 is a flowchart of an exemplary work flow in which a notificationis sent to a subscriber via a carrier supported by multiple aggregators.

FIG. 3 is a flowchart of an exemplary work flow in which a notificationis sent to a subscriber device supported by an unknown carrier network.

FIG. 4 is a flowchart of an exemplary work flow in which a notificationis sent to a subscriber having multiple devices.

DETAILED DESCRIPTION 1 Overview

Referring to FIG. 1, a notification platform 100 administers thedistribution of short message service (SMS) messages or other electroniccommunications to subscribers to the notification platform. Notificationplatform 100 includes an intelligent messaging platform 150 whichdetermines the appropriate channel for delivery of the message to thedevice(s) used by each subscriber. Intelligent messaging platform 150routes and reroutes messages to subscribers, evaluates and acts uponstatus updates related to message delivery, and keeps administratorsapprised of messaging status. In particular, intelligent messagingplatform 150 enables the leveraging of multiple delivery channels byselecting which channel to utilize for the delivery of an SMS message toeach subscriber based on its knowledge of the subscriber's phone numberand mobile telecommunications carrier, business and/or operationalpreferences (e.g., which one of multiple devices is to be contacted),and dynamic and/or real-time message delivery status data.

Subscribers to the notification platform receive messages from thenotification platform. For instance, university students may subscribeto a safety alert notification platform associated with the universityto receive messages relevant to public safety at their university.Residents of a city and/or commuters to that city may subscribe to alocal traffic alert notification platform to receive traffic statusmessages. In some cases, enrollment in a notification platform isinitiated by an individual 120. For instance, each resident and eachcommuter may decide whether he wishes to join the traffic alert group.In other instances, enrollment in a notification platform is automaticand/or mandatory. For example, any university student who provides hismobile phone number to the university is automatically enrolled into thepublic safety notification platform for the university, which may beadministered by the university, without any action on the part of thestudent. In these cases, subscriber data 122 is provided to thenotification platform via an automated subscription process.Subscriptions are processed via a business functionality platform 104.Subscriber information, such as the subscriber's phone number(s), mobilecarrier(s), and preferred mobile communication device and/or method, arestored in a subscriber database 102 on notification platform 100.

In some embodiments, each notification platform is administered by amessaging administrator 106. Messaging administrator 106 may be anoperator or agent associated with notification platform 100.Alternatively, messaging administrator may be associated with theinstitution using the notification platform (e.g., with a university),and may administer the notification platform via a self-service webinterface. To send an SMS message to subscribers, the messagingadministrator generates a Notification Event within notificationplatform 100. The Notification Event contains the text of the message(e.g., “Exit 20 of Interstate 90 is closed. Seek alternate route.”). TheNotification Event may also include other information, such as apercentage of messages that are to be successfully delivered in orderfor the Notification Event to be closed.

When a Notification Event is generated, intelligent messaging platform150 identifies a communication channel for each subscriber. Channels areselected at least in part based on preloaded preferences of thesubscriber, the platform, or both. For instance, intelligent messagingplatform 150 may prefer an SMPP connection to a mobile carrier ratherthan an SMTP connection, if available. Communication channels may alsobe selected based on dynamic or real-time information about the statusof various channels. For instance, the intelligent messaging platformmay possess recent data that indicates that the preferred channel tocontact a particular subscriber is not responding. The intelligentmessaging platform will thus select an alternate, less preferred,channel for that subscriber. In some instances, the intelligentmessaging platform identifies the carrier that serves each subscriber byaccessing the subscriber data stored in subscriber database 102. Inother cases, the intelligent messaging platform performs a carrierlookup to access carrier information stored in an external mobilecarrier database 107.

After the messages associated with the Notification Event are sent,intelligent messaging platform monitors the progress and delivery statusof each message. If a message is undeliverable, for instance because thechannel through which the message was sent is not responding, theintelligent messaging platform will resend the message via an alternatechannel. The intelligent messaging platform collects statistics aboutthe progress and delivery status of each individual message as well asaggregate statistics pertaining to the entire Notification Event. Thesestatistics are stored in a message database 124 and may be provided tomessaging administrator 106, either automatically or upon request by themessaging administrator.

Although the notification platform is described herein primarily withreference to SMS messages, other types of communication are alsosupported, such as voice messaging and emails.

2 System Operation

Referring still to FIG. 1, several mobile telecommunications carriersCarrier A, Carrier B, . . . , Carrier G provide mobiletelecommunications services to mobile communications devices Device 1,Device 2, Device 3, Device N via a radio interface 101. Each device isassociated with a subscriber. For instance, in the example depicted,Device 1 is associated with Subscriber 1, Devices 2 and 3 are associatedwith Subscriber 2, and Device N is associated with Subscriber N.

When a Notification Event is generated for a group, notificationplatform 100 sends SMS messages to subscribers of that group via SMPP(Short Message Peer-to-Peer) and SMTP (Simple Mail Transfer Protocol)connections to the carriers associated with the subscribers' devices. Insome cases, notification platform 100 communicates directly with thecarrier. For instance, notification platform 100 communicates directlywith Carrier A via an SMTP connection 108 and communicates directly withCarrier G via an SMPP connection 110. In other cases, notificationplatform 100 communicates with an aggregator via an SMPP connection; theaggregator then communicates with one or more carriers. For instance,Aggregator I is reached via an SMPP connection 114 and handles messagesdestined for any of Carriers B, C, or D; Aggregator II is reached via anSMPP connection 118 and handles messages destined for any of Carriers D,E, or F. In some cases, a carrier may be reachable via more than onechannel. For instance, notification platform 100 can communicate withCarrier B either directly via an SMTP connection 112 or via SMPPconnection 114 to Aggregator I. Similarly, Carrier F can be reachedeither directly via an SMPP connection 116 or via SMPP connection 118 toAggregator II. Carrier D is reachable through either Aggregator I orAggregator II.

The intelligent messaging platform 150 includes four functional areas:(1) message routing; (2) message status notification; (3) messagedelivery failover; and (4) message delivery reporting. Each of thesefunctional areas is now described in more detail.

2.1 Message Routing

The Message Routing function of intelligent messaging platform 150determines the best channel for sending a message to a particularsubscriber. The delivery path taken by a message intended for aparticular subscriber device depends on the carrier network(s)supporting the subscriber device, the channel(s) available to deliverthe message to the carrier network(s), the relative priority of (orpreference for) each channel, and the status of each channel.

If the carrier serving a particular subscriber device is not known tointelligent messaging platform 150, the Message Routing function is ableto determine the carrier information for the subscriber device. In somecases, the Message Routing function calls a carrier lookup function,which accesses mobile carrier database 107 to retrieve the carrierinformation for the subscriber. Alternatively, the Message Routingfunction may identify the appropriate carrier by interpreting failuremessages returned by selected (e.g., default) delivery channels.

If a particular subscriber device can be reached via more than onedelivery channel, the Message Routing function employs a load balancingmechanism to distribute volume substantially evenly across the multipleavailable channels.

In addition to using information known at the beginning of aNotification Event (e.g., information obtained upon registration of asubscriber or subscriber device), the Message Routing function can alsouse information discovered during the Notification Event to adjust thelogic used to determine the best route. For example, intelligentmessaging platform 100 can process delivery status receipts from aspecific channel and dynamically increase or decrease traffic throughthat channel based on the delivery results and an optimizationalgorithm. Delivery status receipts for a given message may include, forinstance, simple SMTP bounce-backs, aggregator receipt notifications,carrier receipt notifications, or handset delivery notifications.

In addition to using carrier information known at the beginning of aNotification Event (e.g., information obtained upon registration of asubscriber or device), the Message Routing function also makes use ofinformation discovered during the Notification Event to adjust the logicused to determine the best delivery channel. For example, the MessageRouting function enables the processing of delivery status receipts froma specific channel. Based on the delivery results, an optimizationalgorithm may dynamically increase or decrease traffic through thatchannel. Delivery status receipts may include, for instance, simple SMTPbounce-backs, aggregator receipt notifications, carrier receiptnotifications, or handset delivery notifications.

2.2 Message Status Notification

The Message Status Notification function provides the intelligentmessaging platform with a mechanism to receive, interpret, and respondto message status updates in order to increase deliverability andthroughput and to provide visibility into the end-to-end messagingprocess.

In the course of sending a message for delivery to a subscriber device,various events are processed to determine the status of the message.Such events may be internal to the intelligent messaging platform (e.g.,the sending of the message to a downstream interface). The events mayalso be externally generated (e.g., a success or error message generatedby an aggregator, a carrier, or a subscriber device). The event statusis at least informational (e.g., successful delivery to a handset) andin some cases may also be used to drive an action in the intelligentmessaging platform (e.g., a delivery failure message causes theintelligent messaging platform to resend the message via an alternatechannel).

To address variances in the behavior of multiple downstream deliverychannels, the intelligent messaging platform normalizes events returnedfrom the various downstream systems such that the events are representedin a standardized format. In this way, disparate event messages can beinterpreted and acted upon in a way that presents a common userexperience for the messaging administrator 106 monitoring the system.Failure of the intelligent messaging system to normalize disparate eventmessages could potentially result in unintended messaging processingbehavior, which would make the intelligent messaging platform appear tobe behaving in an arbitrary or unpredictable manner.

2.3 Message Delivery Failover

The intelligent messaging platform contains functionality to detectfailed message delivery attempts and to automatically mitigate failuresvia intelligent retry logic.

In some cases, the retry logic initiates subsequent delivery attemptsthrough the initial delivery channel. In other cases, the retry logicsends subsequent delivery attempts through an alternate deliverychannel, such as a different aggregator, a direct SMPP connection to thecarrier, or an SMTP connection to the carrier. The retry logic selectsthe channel for the retry attempt based on factors such as anotification indicating an out-of-service delivery channel, an absenceof an expected delivery status message within a predetermined timeinterval, the receipt of a negative status update, or another condition.

In some instances, there are multiple possible channels through which amessage can be sent to a given carrier, e.g., one or more SMPPaggregators, one or more SMPP direct carrier binds, and/or a carrierSMS-via-SMTP gateway. The possible channels for each carrier are rankordered according to preference by the intelligent messaging platform.For instance, a direct SMPP connection to the carrier may be the mostpreferred channel, where available. When the most preferred method failsor is not available, a secondary delivery method is attempted via a lesspreferred channel.

The retry logic may take into account the specific service provider(i.e., carrier and/or aggregator) to which the message is delivered, theimportance of the message, or the intended channel delivery route, amongother factors. For instance, the time period before a retry attempt mayvary depending on the aggregator or the carrier to which the message wassent.

2.4 Message Delivery Reporting

The Message Delivery Reporting functionality provides a way for theintelligent messaging platform to determine message status updates, suchas the state of a given message or an indication of whether a specificmessaging end point (e.g., a subscriber device) has received at leastone message. Message Delivery Reporting also allows the intelligentmessaging platform to determine whether a subscriber who has registeredmultiple contact points, possibly spanning multiple communicationsmethods (e.g., SMS text, email, voice, and/or instant messaging) hasreceived at least one message on at least one of the registered contactpoints as part of a particular Notification Event. Statistics associatedwith message status updates help the messaging administrator to gaugethe success of a Notification Event. These statistics can also be usedby administrators of the intelligent messaging platform to tune thelogic that controls message processing decisions in order to improvereliability and performance of the intelligent messaging platform.

The Message Delivery Reporting functionality is capable of providingsome or all of four levels of reporting associated with the status of aNotification sent to a group of subscribers. In order from lowest tohighest level of detail, these four levels include an Event level, aMessage level, a User level, and an Overall level.

Event Level Reporting

Event level reporting captures information about each event associatedwith a send attempt or a status notification for a single message. Forexample, events involved in sending a message may include some or all ofthe following: an initial send to an SMPP aggregator, an SMPP responseacknowledging receipt of the message by the aggregator, an SMPP deliveryreceipt indicating receipt of the message by a carrier, a failurenotification from the carrier indicating a problem with delivery to thesubscriber device, a second send attempt via SMTP, an SMTP failure, athird send attempt to another SMPP aggregator, a delivery receiptindicating delivery of the message to a subscriber handset, an implicitor explicit acknowledgement of receipt by the subscriber, and othersimilar events. Event level reporting tracks all such activities relatedto a particular message. The results of Event level reporting are usedas input into the processing logic implemented by the intelligentmessaging platform.

Message Level Reporting

Message level reporting captures information about the status of asingle message over time. The status of a message changes in response toevents (e.g., the events listed above) associated with the message andis determined by processing of the event level details associated withthe message. The status of a message may include, for instance, waitingfor an initial send, sent but waiting for a status notification,delivered, failed, waiting for a retry, and other similar states. Insome cases, the status of a message may indicate only that the messagewas received by a subscriber device. In other cases, the status of amessage may indicate that the message was acknowledged by an automaticor manual feedback mechanism invoked by the subscriber who received themessage.

Message performance may be aggregated across an entire NotificationEvent, providing the message administrator with an overview of themessage level delivery (e.g., a percentage of messages delivered). Forinstance, the message performance for a particular Notification Eventmay indicate that 80% of the intended messages were delivered within twominutes of the initial send.

User Level Reporting

User level reporting captures information about the delivery status ofall messages to a single user across all contact points registered tothe user, including, for instance, email addresses, phone numbers forvoice, and/or phone numbers for text (SMS). Message level detail foreach contact point is aggregated to provide user level delivery statusinformation. For example, a subscriber with one voice phone number andone SMS phone number may be marked as successfully contacted by the userlevel reporting function if the user answered a voice call and/or if anSMS was identified successfully delivered to the subscriber's device.

Overall Reporting

The overall status of a send to multiple subscribers is aggregated fromuser level detail, message level detail, and event level detail. Variousstatistics can be provided, such as delivery rates on various channels,delivery rates to types of contact points, a percentage of subscribersreached by any means, success and/or failure percentages for variouschannels, a percentage of messages delivered within a certain amount oftime, and other performance metrics. For example, for a particularNotification Event, the intelligent messaging platform may report thatSMS delivery reached 90% of the targeted subscribers within 2 minutes,while email delivery succeeded for only 70% of the targeted subscribersand took 10 minutes to reach those subscribers.

3 Examples

The following use cases provide exemplary scenarios of the operation ofthe intelligent messaging platform. While specific messagingtechnologies are provided in the use cases, any means of distributingmessages to endpoints across multiple channels can be supported by theintelligent messaging platform.

3.1 Example 1

Referring to FIGS. 1 and 2, in a first exemplary use case, intelligentmessaging platform 150 is used to provide a notification to a subscriberon a carrier supported via multiple aggregators. In particular, in thisexample, a message is to be sent to Subscriber 1, who has one mobile(SMS enabled) phone number known to be supported by Carrier D.

A Notification Event is initiated by messaging administrator 106 (step200) and is targeted at a list of subscribers including Subscriber 1.The messages associated with the Notification Event are enqueued to theintelligent messaging platform 150 (step 202).

The intelligent messaging platform determines that Carrier D isreachable through two channels (step 203): SMPP channel 114 throughAggregator I and SMPP channel 118 through Aggregator II. The intelligentmessaging platform 150 determines that SMPP is the preferred method formessage delivery. Aggregators I and II have equal priority within therules of the intelligent messaging platform, so one of Aggregators I andII (in this case, Aggregator I) is chosen at random (step 204).

The message is sent via SMPP to Aggregator I (step 206). Aggregator Iresponds to acknowledge receipt of the message (step 208).

After a predetermined period of time, no further update has beenreceived from Aggregator I. The intelligent messaging platform thenenqueues the message for retry (step 210), with SMPP delivery stillpreferred over SMTP. However, Aggregator I is now excluded fromconsideration. Aggregator II is thus chosen as the retry channel and themessage is resent via SMPP to Aggregator II (step 212). Aggregator IIresponds to acknowledge receipt of the message (step 214). OnceAggregator II successfully forwards the message to Carrier D, AggregatorII sends a delivery receipt to the intelligent messaging platform toindicate that Carrier D has accepted the message (step 216).

No handset receipt is expected from subscribers supported by Carrier D.Thus, message delivery is considered complete once Carrier D hasaccepted the message. The intelligent messaging platform updates thestatus of Subscriber 1 as having been successfully reached by SMS aspart of the Notification Event (step 218).

3.2 Example 2

Referring to FIGS. 1 and 3, in another exemplary use case, intelligentmessaging platform 150 is used to provide a notification to a subscriberdevice supported by an unknown carrier network. In particular, in thisexample, a message is to be sent to Subscriber 1, whose mobile (SMSenabled) device Device 1 is supported by a carrier unknown to theintelligent messaging platform.

A notification event is initiated by messaging administrator 106 (step300) and is targeted at a list of subscribers including Subscriber 1.The messages associated with the notification event are enqueued to theintelligent messaging platform 150 (step 302).

Intelligent messaging platform 150 determines that the carrier servingDevice 1 is unknown (step 303). Aggregator I supports message deliveryto unknown carriers and therefore the intelligent messaging platformselects Aggregator I as the preferred route for the message toSubscriber 1 (step 304). The message is sent via SMPP to Aggregator I(step 306). Aggregator I responds, rejecting the request asundeliverable (step 308).

The intelligent messaging platform then performs a carrier lookup tomobile carrier database 107 to determine that Device 1 is supported byCarrier A (step 310). The intelligent messaging platform recognizes thatCarrier A can be reached only via SMTP. The message is sent via SMTP toCarrier A for delivery (step 312).

Carrier A responds to acknowledge receipt of the message (step 314). Nohandset receipt is expected from subscribers supported by Carrier A.Thus, message delivery is considered complete once Carrier A hasaccepted the message. The intelligent messaging platform updates thestatus of Subscriber 1 has having been successfully reached by SMS aspart of the Notification Event (step 316).

3.3 Example 3

Referring to FIGS. 1 and 4, in another exemplary use case, intelligentmessaging platform 150 is used to provide a notification to a subscriberhaving multiple mobile communication devices. In particular, in thisexample, a message is to be sent to Subscriber 2, who has two mobile(SMS enabled) devices: Device 2, supported by Carrier C; and Device 3,supported by Carrier F.

A Notification Event is initiated by messaging administrator 106 (step400) and is targeted at a list of subscribers including Subscriber 2.The messages associated with the Notification Event are enqueued to theintelligent messaging platform 150 (step 402).

The intelligent message platform determines that the SMPP connection 114through Aggregator I is the only, and thus preferred, route for deliveryof the message to Device 2 (step 404). The intelligent messagingplatform also determines that the direct SMPP connection 116 to CarrierF is the best channel for delivering the message to Device 3 (step 406),because direct SMPP communication is generally preferable to Aggregatorcommunication. The intelligent messaging platform sends the message toDevices 2 and 3 via Aggregator I and the direct SMPP connection,respectively (step 408).

Carrier F responds to acknowledge receipt of the message (step 410). Nohandset receipt is expected from subscribers supported by Carrier F.Thus, message delivery to Device 3 is considered complete once Carrier Fhas accepted the message. The intelligent messaging platform updates thestatus of Subscriber 2 as having been successfully reached by SMS aspart of the Notification Event (step 412). However, the notificationstatus of Subscriber 2 remains open pending delivery of the message toDevice 2.

Aggregator I also responds to acknowledge receipt of the message (step414). Once Aggregator I successfully forwards the message to Carrier C,Aggregator I sends a delivery receipt to the intelligent messagingplatform to indicate that Carrier C has accepted the message (step 416).The intelligent messaging platform recognizes Carrier C as providingHandset Receipt event messages, and thus the notification status ofSubscriber 1 remains open.

When Carrier C successfully delivers the message to Device 2, a handsetdelivery receipt is sent by Carrier C to Aggregator I, which forwardsthe handset delivery receipt to the intelligent messaging platform (step418). At this point, the intelligent messaging platform considers thedelivery of the message to Device 2 to be complete.

Subscriber 2 is already flagged as having been successfully reached bySMS. However, the message level delivery tracking is updated to notethat all of the devices associated with Subscriber 2 have been reached(step 420).

4 Implementation

The intelligent messaging platform runs on a computing platform, suchas, for instance, a multi-threaded computing environment interfaced withexternal messaging delivery channels and mobile carrier databases viathe Internet.

The intelligent messaging platform is described herein with reference todelivery channels including SMPP via SMS aggregators, SMPP direct tocarriers, and SMTP direct to carriers. However, the platform can also beconfigured to be applied to any other messaging technology, such as,e.g., SIP (Session Initiation Protocol), SOAP/XML (Simple Object AccessProtocol/Extensible Markup Language), or CAP (Common Alerting Protocol).

The techniques described herein can be implemented in digital electroniccircuitry, or in computer hardware, firmware, software, or incombinations of them. The techniques can be implemented as a computerprogram product, i.e., a computer program tangibly embodied in aninformation carrier, e.g., in a machine-readable storage device or in apropagated signal, for execution by, or to control the operation of,data processing apparatus, e.g., a programmable processor, a computer,or multiple computers. A computer program can be written in any form ofprogramming language, including compiled or interpreted languages, andit can be deployed in any form, including as a stand-alone program or asa module, component, subroutine, or other unit suitable for use in acomputing environment. A computer program can be deployed to be executedon one computer or on multiple computers at one site or distributedacross multiple sites and interconnected by a communication network.

Method steps of the techniques described herein can be performed by oneor more programmable processors executing a computer program to performfunctions of the invention by operating on input data and generatingoutput. Method steps can also be performed by, and apparatus of theinvention can be implemented as, special purpose logic circuitry, e.g.,an FPGA (field programmable gate array) or an ASIC (application-specificintegrated circuit). Modules can refer to portions of the computerprogram and/or the processor/special circuitry that implements thatfunctionality.

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. The essential elements of a computer area processor for executing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto-optical disks, or optical disks. Information carrierssuitable for embodying computer program instructions and data includeall forms of non-volatile memory, including by way of examplesemiconductor memory devices, e.g., EPROM, EEPROM, and flash memorydevices; magnetic disks, e.g., internal hard disks or removable disks;magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor andthe memory can be supplemented by, or incorporated in special purposelogic circuitry.

To provide for interaction with a user, the techniques described hereincan be implemented on a computer having a display device, e.g., a CRT(cathode ray tube) or LCD (liquid crystal display) monitor, fordisplaying information to the user and a keyboard and a pointing device,e.g., a mouse or a trackball, by which the user can provide input to thecomputer (e.g., interact with a user interface element, for example, byclicking a button on such a pointing device). Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input.

The techniques described herein can be implemented in a distributedcomputing system that includes a back-end component, e.g., as a dataserver, and/or a middleware component, e.g., an application server,and/or a front-end component, e.g., a client computer having a graphicaluser interface and/or a Web browser through which a user can interactwith an implementation of the invention, or any combination of suchback-end, middleware, or front-end components. The components of thesystem can be interconnected by any form or medium of digital datacommunication, e.g., a communication network. Examples of communicationnetworks include a local area network (“LAN”) and a wide area network(“WAN”), e.g., the Internet, and include both wired and wirelessnetworks.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interact overa communication network. The relationship of client and server arises byvirtue of computer programs running on the respective computers andhaving a client-server relationship to each other.

It is to be understood that the foregoing description is intended toillustrate and not to limit the scope of the invention, which is definedby the scope of the appended claims. Other embodiments are within thescope of the following claims.

1-27. (canceled)
 28. A method for sending messages to communicationdevices, wherein at least one of said communication devices isassociated with plurality of delivery media, each of which is availablefor receiving a message, said method comprising sending a message to acommunication device using a first delivery-medium from said pluralityof delivery media, executing a first monitoring step, executing a secondmonitoring step, and based on a result of at least one of said first andsecond monitoring steps, sending a message to said communication deviceusing a second delivery-medium from said plurality of delivery media,wherein said first monitoring step comprises monitoring a status of saidfirst delivery-medium, and wherein said second monitoring step comprisesmonitoring a status of messages sent on said first delivery-medium. 29.The method of claim 28, further comprising selecting said firstdelivery-medium based at least in part on a user-supplied preference.30. The method of claim 28, wherein sending a message to saidcommunication device using said second delivery-medium comprisesselecting said second delivery medium based on a first status and asecond status, wherein said first status is a status of said firstdelivery-medium and said second status is a status of said seconddelivery-medium.
 31. The method of claim 28, wherein sending a messageto said communication device using said second delivery-medium comprisesselecting said second delivery medium based on a first status and asecond status, wherein said first status is indicative of an extent ofsuccessful message delivery on said first delivery-medium and saidsecond status is a status indicative of successful message delivery onsaid second delivery-medium.
 32. The method of claim 28, wherein saidfirst delivery-medium comprises a first mobile communications carrier.33. The method of claim 28, wherein said first delivery-medium comprisesa first mobile communications carrier and wherein said seconddelivery-medium comprises a second mobile communications carrier,wherein said first mobile communications carrier and said second mobilecommunications carrier are different.
 34. The method of claim 28,wherein said first delivery-medium comprises a plurality of mobilecommunications carriers, one of which is dynamically selected formessage delivery.
 35. The method of claim 28, further comprisingselecting which of said delivery media to use to send a message based atleast in part on a type of connection associated with each of saiddelivery media.
 36. The method of claim 28, further comprising choosingwhich delivery medium from among said delivery media to use for sendinga message to said communication device based at least in part in aneffort to distribute communication volume evenly across allcommunication media.
 37. The method of claim 28, further which of saiddelivery media to use for sending said message based at least in part ona throughput with which at least one of said delivery media selectscarriers for use in transmitting messages and transmits messages usingsaid selected carriers.
 38. The method of claim 28, wherein executingsaid second monitoring step comprises determining a status of messagessent on said first delivery-medium based on an event associated with atleast one of said messages.
 39. The method of claim 28, whereinexecuting said second monitoring step comprises receiving, from acomponent of said first delivery-medium, an event status messageindicative of an event associated with a message sent on said firstdelivery-medium.
 40. The method of claim 28, wherein said executing saidfirst monitoring step comprises monitoring said first delivery mediumfor a selected interval of time, and detecting an absence of anyresponse from a component of said first delivery-medium during saidselected interval of time.
 41. The method of claim 28, wherein sending amessage to said communication device using a second delivery-medium fromsaid plurality of delivery media based on a result of at least one ofsaid first and second monitoring steps comprises sending a message usingsaid second delivery-medium when execution of said first or secondmonitoring step indicates occurrence of inadequate message deliveryperformance on said first delivery-medium.
 42. The method of claim 28,wherein said first monitoring step further comprises monitoring a statusof said second delivery-medium, and wherein said second monitoring stepfurther comprises monitoring a status of messages sent on said seconddelivery-medium.
 43. The method of claim 28, wherein said firstmonitoring step further comprises monitoring a status of said seconddelivery-medium, and wherein said second monitoring step furthercomprises monitoring a status of messages sent on said seconddelivery-medium, said method further comprising updating a status ofsubscribers based on status of said first delivery-medium, status ofmessages sent over said first delivery-medium, status of said seconddelivery-medium, and status of messages sent over said seconddelivery-medium.
 44. The method of claim 28, further comprisingaccepting an instruction to send a message to a plurality of saidcommunication devices.
 45. The method of claim 28, wherein said messageis a short message service message.
 46. The method of claim 28, whereinsaid message is a voice message.
 47. The method of claim 28, whereinsaid message is an email.
 48. The method of claim 28, wherein saidmessage is an instant message.
 49. The method of claim 28, wherein saidmessage sent to said communication device using said first deliverymedium is a first message, wherein said message sent to saidcommunication device using said second delivery medium is a secondmessage, wherein said first message has a first type, wherein saidsecond message has a second type, wherein said first type is selectedfrom the group consisting of email, a short message service message, anda voice message, wherein said second type is selected from the groupconsisting of email, a short message service message, and wherein saidfirst type differs from said second type.
 50. The method of claim 28,wherein said message sent to said communication device using said firstdelivery medium is a first message, wherein said message sent to saidcommunication device using said second delivery medium is a secondmessage, wherein said first message has a first type, wherein saidsecond message has a second type, wherein said first type is selectedfrom the group consisting of email, a short message service message, anda voice message, wherein said second type is selected from the groupconsisting of email, a short message service message, and wherein saidfirst type is the same as said second type.